\section{timer}
timer类可以测量时间的流失，是一个小型的计时器，提供毫秒级别的计时精度和操作函数，供程序员手工控制。timer位于名称空间boost，需要包含头文件<boost/timer.hpp>
timer对象创建的时候就会开始计时，elapsed()表示自创建对象到目前流失的时间的秒数elapsed\_min,elapsed\_max表示测量时间的最小精度和最高精度。
timer计数器使用了标准库头文件中的clock作为计时起点，保存在私有变量\_start\_time中。调用elapsed()时就获取此时的clock数，减去\_start\_time除以CLOCKS\_PER\_SEC获得以秒为单位的已经流失的时间。
\cppfile{code/boost/timer/ex1/main.cpp}
\section{progress\_timer}
头文件包含<boost/progress.hpp>,progress\_timer t;progress\_timer析构时输出流失时间。
\cppfile{code/boost/timer/ex2/main.cpp}
使用boost进度条：
\cppfile{code/boost/ex2/main.cpp}
\section{date\_time}
date\_time库包含两个部分，分别是处理日期的gregorian和处理时间的posix\_time，需要包含的头文件：
\begin{cpp}
    #include<boost/date_time/gregorian/gegorian.hpp>
    using namespace boost::gregorian
    # 处理时间的组件
    #include <boost/date_time/posix_time/posix_time.hpp>
    using namespace boost::posix_time
\end{cpp}
date\_time库中用枚举special\_values定义了这个特殊的时间概念，它位于名字空间boost::date\_time，并被using语句引入其它名字空间。
\begin{itemize}
    \item pos\_infin:表示正无穷
    \item meg\_infin:表示负无穷
    \item not\_a\_date\_time:无效时间
    \item min\_date\_time:可表示最小日期或者时间
    \item max\_date\_time:可表示最大日期或者时间
\end{itemize}
cmake编译的时候需要加上\mint{cmake}{target_link_libraries(ex3 boost_date_time)}
否则将出现to\_simple\_string之类的函数使用的时候未定义。
\cppfile{code/boost/timer/ex3/main.cpp}
\section{单元测试}
单元测试示例：
\begin{bash}
    .
    ├── CMakeLists.txt
    ├── include
    │   └── square.h
    ├── src
    │   ├── CMakeLists.txt
    │   ├── main.cpp
    │   └── square.cpp
    └── test
    ├── CMakeLists.txt
    └── test.cpp

\end{bash}
上面包含了头文件square.h来说明函数square函数定义。scr包含主程序main.cpp和square函数的源代码square.cpp。test文件中写明了测试内容。按照cmake常用标准，cmake中的每一个文件痘必须有CMakeLists.txt文件。编译的时候直接按照常规的CMake编译：
\begin{bash}
    mkdir build
    cd build
    cmake ..
    make -j4
    # 测试代码
    make test
\end{bash}
或者直接运行ctest也可以。square头文件代码：
\cppfile{code/ctest/ex/include/square.h}
square.cpp源代码如下：
\cppfile{code/ctest/ex/src/square.cpp}
主测试代码如下：
\cppfile{code/ctest/ex/src/main.cpp}
CMakeLists文件如下：
\cmakefile{code/ctest/ex/src/CMakeLists.txt}
测试文件代码：
\cppfile{code/ctest/ex/test/test.cpp}
其对应的CMakeLists.txt文件如下：
\cmakefile{code/ctest/ex/test/CMakeLists.txt}
工程下面的CMakeLists文件：
\cmakefile{code/ctest/ex/CMakeLists.txt}

